hotplug: fix busy loop device detection
authorOlaf Hering <olaf@aepfle.de>
Fri, 20 May 2011 17:09:26 +0000 (18:09 +0100)
committerOlaf Hering <olaf@aepfle.de>
Fri, 20 May 2011 17:09:26 +0000 (18:09 +0100)
Improve busy loop device detection after changeset 22773:02c0af2bf280

The intention is not to find the file to be mounted in the losetup -a
output.  What matters are existing mounted files with the same dev:inode
as the new file.  So the fix is to apply variable expansion which
happens only without double quotes.  Otherwise $dev will contain
newlines for hardlinked files, as mentioned in the commit message from
the changeset above.

losetup -a does also truncate long filenames to 62 chars due to ioctl
limitations.  This part is fixed with 2.6.37 where the filename can be
obtained from sysfs. As a result very long filenames will be missed.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/hotplug/Linux/block

index 06de5c92a24ef7733b2abbb8c2d0111fa74ce5df..fb9df6f357bb27dd04d969d03dc58e12e21fbbd2 100644 (file)
@@ -280,8 +280,8 @@ mount it read-write in a guest domain."
           fi
 
           shared_list=$(losetup -a |
-                sed -n -e "s@^\([^:]\+\)\(:[[:blank:]]\[${dev}\]:${inode}[[:blank:]](${file})\)@\1@p" )
-          for dev in "$shared_list"
+                sed -n -e "s@^\([^:]\+\)\(:[[:blank:]]\[${dev}\]:${inode}[[:blank:]](.*)\)@\1@p" )
+          for dev in $shared_list
           do
             if [ -n "$dev" ]
             then